[Amazon Connect] 星占いをメールで受け取るシステムを雑に作ってみた
1 はじめに
Amazon Connect(以下、Connect)では、発信元の電話番号の取得やLambdaの実行が可能です。 今回は、Connectで星占いのメールを受け取るサービスを雑に作ってみました。
最初に使ってみたようすです。
2 問い合わせフロー
設定した問い合わせフローは、次のようなものです。内容は、概ね以下のとおり。
- 言語を日本語に設定
- アナウンスと共にユーザーの入力を受け付ける
- Lambdaの実行
- 結果のアナウンス
そして、Lambdaの実行時には、システムの保存済みのお客様入力をパラメータ(inputData)として送っています。
3 Lambdaの実装
下記のJSONは、Lambdaが呼び出された際に、Connectから送られてくるJSONです。
発信元の電話番号は、Details.ContactData.CustomerEndpoint.Addressから、ユーザーの入力は、パラメータinputDataから、それぞれ取り出せます。
{ "Details": { "ContactData": { "Attributes": {}, "Channel": "VOICE", "ContactId": "8c088600-9ec5-4cb9-9a79-bf9b5c797a89", "CustomerEndpoint": { "Address": "+819012345678", "Type": "TELEPHONE_NUMBER" }, "InitialContactId": "8c088600-9ec5-4cb9-9a79-bf9b5c797a89", "InitiationMethod": "INBOUND", "InstanceARN": "arn:aws:connect:ap-southeast-2:xxxxxxxx:instance/9f2c9c33-43d0-487a-a25c-9029828467ee", "MediaStreams": { "Customer": { "Audio": null } }, "PreviousContactId": "8c088600-9ec5-4cb9-9a79-bf9b5c797a89", "Queue": null, "SystemEndpoint": { "Address": "+818001236882", "Type": "TELEPHONE_NUMBER" } }, "Parameters": { "inputData": "19801221" } }, "Name": "ContactFlowEvent" }
実装したLambdaのコードが、下記のとおりです。
var AWS = require('aws-sdk'); exports.handler = async function(event, context) { // 発信元の電話番号 const phoneNumber = event.Details.ContactData.CustomerEndpoint.Address; // ユーザーの入力値(誕生日) const birthday = event.Details.Parameters.inputData; // 誕生日から星占いの結果を取得する const message = getHoroscope(birthday); // 結果をメールで送信する const SNS = new AWS.SNS(); const params = { Message: message, PhoneNumber: phoneNumber }; await SNS.publish(params).promise(); return {}; }; function getHoroscope(birthday) { //・・・略・・・ }
4 最後に
星占いのコンテンツは別として、これぐらいの仕組みなら瞬殺(実際は、30分程度かかりました・・・)で出来てしまいます。
システム構築のリソースの一つとして、Connectを掌握しておくと、少し幸せになれるかも知れません。